# 20 "../haxe/lexer.mll"
 
open Lexing
open Ast

type error_msg =
	| Invalid_character of char
	| Unterminated_string
	| Unterminated_regexp
	| Unclosed_comment
	| Invalid_escape
	| Invalid_option

exception Error of error_msg * pos

let error_msg = function
	| Invalid_character c when int_of_char c > 32 && int_of_char c < 128 -> Printf.sprintf "Invalid character '%c'" c
	| Invalid_character c -> Printf.sprintf "Invalid character 0x%.2X" (int_of_char c)
	| Unterminated_string -> "Unterminated string"
	| Unterminated_regexp -> "Unterminated regular expression"
	| Unclosed_comment -> "Unclosed comment"
	| Invalid_escape -> "Invalid escape sequence"
	| Invalid_option -> "Invalid regular expression option"

let cur_file = ref ""
let cur_line = ref 1
let all_lines = Hashtbl.create 0
let lines = ref []
let buf = Buffer.create 100

let error e pos =
	raise (Error (e,{ pmin = pos; pmax = pos; pfile = !cur_file }))

let keywords =
	let h = Hashtbl.create 3 in
	List.iter (fun k -> Hashtbl.add h (s_keyword k) k)
		[Function;Class;Static;Var;If;Else;While;Do;For;
		Break;Return;Continue;Extends;Implements;Import;
		Switch;Case;Default;Public;Private;Try;Untyped;
		Catch;New;This;Throw;Extern;Enum;In;Interface;
		Cast;Override;Dynamic;Typedef;Package;Callback;
		Inline;Using];
	h

let init file =
	cur_file := file;
	cur_line := 1;
	lines := []

let save_lines() =
	Hashtbl.replace all_lines !cur_file !lines

let save() =
	save_lines();
	!cur_file, !cur_line

let restore (file,line) =
	save_lines();
	cur_file := file;
	cur_line := line;
	lines := Hashtbl.find all_lines file

let newline lexbuf =
	lines :=  (lexeme_end lexbuf,!cur_line) :: !lines;
	incr cur_line

let find_line p lines =
	let rec loop line delta = function
		| [] -> line + 1, p - delta
		| (lp,line) :: l when lp > p -> line, p - delta
		| (lp,line) :: l -> loop line lp l
	in
	loop 0 0 lines

let get_error_line p =
	let lines = List.rev (try Hashtbl.find all_lines p.pfile with Not_found -> []) in
	let l, _ = find_line p.pmin lines in
	l	

let get_error_pos printer p =
	if p.pmin = -1 then
		"(unknown)"
	else
		let lines = List.rev (try Hashtbl.find all_lines p.pfile with Not_found -> []) in
		let l1, p1 = find_line p.pmin lines in
		let l2, p2 = find_line p.pmax lines in
		if l1 = l2 then begin
			let s = (if p1 = p2 then Printf.sprintf " %d" p1 else Printf.sprintf "s %d-%d" p1 p2) in
			Printf.sprintf "%s character%s" (printer p.pfile l1) s
		end else
			Printf.sprintf "%s lines %d-%d" (printer p.pfile l1) l1 l2

let reset() = Buffer.reset buf
let contents() = Buffer.contents buf
let store lexbuf = Buffer.add_string buf (lexeme lexbuf)
let add c = Buffer.add_string buf c

let mk_tok t pmin pmax =
	t , { pfile = !cur_file; pmin = pmin; pmax = pmax }

let mk lexbuf t =
	mk_tok t (lexeme_start lexbuf) (lexeme_end lexbuf)

let mk_ident lexbuf =
	match lexeme lexbuf with
	| s ->
		mk lexbuf (try Kwd (Hashtbl.find keywords s) with Not_found -> Const (Ident s))

let invalid_char lexbuf =
	error (Invalid_character (lexeme_char lexbuf 0)) (lexeme_start lexbuf)

type file_index = {
	f_file : string;
	f_lines : (int * int) list;
	f_max_line : int;
}

type line_index = (string, file_index) PMap.t

let make_index f lines =
	{
		f_file = f;
		f_lines = List.rev lines;
		f_max_line = (match lines with (_,line) :: _ -> line + 1 | [] -> 1);
	}

let build_line_index() =
	Hashtbl.fold (fun f l acc -> PMap.add f (make_index f l) acc) all_lines PMap.empty

let find_line_index idx p =
	let idx = (try PMap.find p.pfile idx with Not_found -> make_index p.pfile []) in
	let ppos = p.pmin in
	let rec loop = function
		| [] -> idx.f_max_line
		| (lp,line) :: l -> if lp > ppos then line else loop l
	in
	loop idx.f_lines


# 141 "../haxe/lexer.ml"
let __ocaml_lex_tables = {
  Lexing.lex_base = 
   "\000\000\253\255\000\000\000\000\000\000\255\255\001\000\006\000\
    \192\255\095\000\198\000\017\001\045\001\197\255\198\255\200\255\
    \201\255\202\255\203\255\204\255\205\255\206\255\207\255\218\255\
    \219\255\220\255\221\255\037\000\041\000\073\000\074\000\075\000\
    \094\000\181\000\076\000\091\000\095\000\098\000\179\000\179\000\
    \122\001\144\001\252\255\000\000\000\000\255\255\253\255\176\001\
    \198\001\220\001\002\002\093\000\030\002\040\002\132\001\154\001\
    \245\255\186\001\062\002\096\000\072\002\224\255\199\255\233\255\
    \023\001\236\255\243\255\225\255\235\255\242\255\196\255\240\255\
    \228\255\239\255\227\255\238\255\237\255\234\255\229\255\092\000\
    \232\255\231\255\230\255\082\002\157\002\232\002\051\003\249\001\
    \250\001\107\000\002\000\254\255\255\255\253\255\164\003\165\003\
    \250\255\152\000\003\000\254\255\255\255\252\255\253\255\166\003\
    \170\003\250\255\149\000\007\000\254\255\255\255\251\255\252\255\
    \100\003\171\003\251\255\198\000\008\000\254\255\255\255\252\255\
    \253\255\118\002\254\255\255\255";
  Lexing.lex_backtrk = 
   "\002\000\255\255\255\255\255\255\255\255\255\255\001\000\255\255\
    \255\255\062\000\061\000\061\000\063\000\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\032\000\047\000\033\000\044\000\042\000\
    \041\000\040\000\039\000\014\000\046\000\043\000\045\000\038\000\
    \005\000\005\000\255\255\003\000\001\000\255\255\255\255\255\255\
    \255\255\255\255\004\000\255\255\255\255\006\000\009\000\255\255\
    \255\255\008\000\255\255\255\255\007\000\255\255\255\255\255\255\
    \011\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\029\000\
    \255\255\255\255\255\255\060\000\060\000\060\000\061\000\255\255\
    \004\000\003\000\001\000\255\255\255\255\255\255\255\255\006\000\
    \255\255\004\000\001\000\255\255\255\255\255\255\255\255\255\255\
    \006\000\255\255\002\000\001\000\255\255\255\255\255\255\255\255\
    \255\255\005\000\255\255\003\000\001\000\255\255\255\255\255\255\
    \255\255\002\000\255\255\255\255";
  Lexing.lex_default = 
   "\255\255\000\000\255\255\255\255\255\255\000\000\006\000\008\000\
    \000\000\255\255\255\255\255\255\255\255\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\000\000\255\255\255\255\000\000\000\000\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \000\000\255\255\255\255\255\255\255\255\000\000\000\000\000\000\
    \064\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\255\
    \000\000\000\000\000\000\255\255\255\255\255\255\255\255\088\000\
    \088\000\255\255\255\255\000\000\000\000\000\000\095\000\095\000\
    \000\000\255\255\255\255\000\000\000\000\000\000\000\000\104\000\
    \104\000\000\000\255\255\255\255\000\000\000\000\000\000\000\000\
    \113\000\113\000\000\000\255\255\255\255\000\000\000\000\000\000\
    \000\000\255\255\000\000\000\000";
  Lexing.lex_trans = 
   "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\044\000\046\000\255\255\091\000\099\000\255\255\044\000\
    \042\000\108\000\117\000\043\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \044\000\006\000\000\000\002\000\000\000\000\000\044\000\027\000\
    \014\000\012\000\000\000\034\000\033\000\013\000\018\000\017\000\
    \030\000\037\000\023\000\036\000\039\000\038\000\041\000\040\000\
    \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\
    \024\000\025\000\029\000\028\000\026\000\016\000\015\000\009\000\
    \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\
    \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\
    \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\
    \009\000\022\000\082\000\021\000\031\000\011\000\081\000\010\000\
    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
    \010\000\020\000\032\000\019\000\035\000\079\000\078\000\077\000\
    \076\000\071\000\070\000\056\000\069\000\066\000\061\000\009\000\
    \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\
    \009\000\080\000\093\000\075\000\068\000\067\000\000\000\065\000\
    \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\
    \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\
    \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\
    \009\000\009\000\102\000\004\000\110\000\000\000\009\000\005\000\
    \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\
    \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\
    \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\
    \009\000\009\000\074\000\072\000\000\000\062\000\000\000\000\000\
    \000\000\059\000\064\000\060\000\060\000\060\000\060\000\060\000\
    \060\000\060\000\060\000\060\000\060\000\000\000\000\000\003\000\
    \063\000\111\000\073\000\000\000\101\000\120\000\010\000\010\000\
    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
    \001\000\255\255\000\000\000\000\000\000\000\000\045\000\010\000\
    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
    \010\000\255\255\119\000\000\000\255\255\010\000\000\000\010\000\
    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
    \010\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\
    \086\000\086\000\086\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\009\000\009\000\009\000\009\000\009\000\009\000\
    \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\
    \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\
    \009\000\009\000\009\000\009\000\000\000\000\000\000\000\000\000\
    \011\000\000\000\010\000\010\000\010\000\010\000\010\000\010\000\
    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
    \010\000\010\000\010\000\010\000\084\000\000\000\083\000\083\000\
    \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\
    \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\
    \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\
    \048\000\000\000\040\000\040\000\040\000\040\000\040\000\040\000\
    \040\000\040\000\040\000\040\000\054\000\054\000\054\000\054\000\
    \054\000\054\000\054\000\054\000\054\000\054\000\048\000\047\000\
    \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\
    \040\000\040\000\054\000\054\000\054\000\054\000\054\000\054\000\
    \054\000\054\000\054\000\054\000\000\000\047\000\000\000\000\000\
    \000\000\000\000\000\000\058\000\000\000\058\000\000\000\047\000\
    \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\
    \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\
    \057\000\057\000\057\000\057\000\051\000\047\000\053\000\053\000\
    \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\
    \000\000\000\000\000\000\091\000\255\255\000\000\090\000\255\255\
    \049\000\000\000\000\000\052\000\050\000\050\000\050\000\050\000\
    \050\000\050\000\050\000\050\000\050\000\050\000\000\000\255\255\
    \000\000\000\000\000\000\000\000\000\000\050\000\050\000\050\000\
    \050\000\050\000\050\000\089\000\255\255\000\000\000\000\000\000\
    \000\000\000\000\000\000\052\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\050\000\050\000\050\000\050\000\050\000\050\000\
    \050\000\050\000\050\000\050\000\000\000\050\000\050\000\050\000\
    \050\000\050\000\050\000\050\000\050\000\050\000\050\000\050\000\
    \050\000\055\000\000\000\055\000\000\000\000\000\054\000\054\000\
    \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\
    \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\
    \053\000\053\000\000\000\050\000\050\000\050\000\050\000\050\000\
    \050\000\000\000\000\000\000\000\000\000\052\000\057\000\057\000\
    \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\
    \060\000\060\000\060\000\060\000\060\000\060\000\060\000\060\000\
    \060\000\060\000\083\000\083\000\083\000\083\000\083\000\083\000\
    \083\000\083\000\083\000\083\000\000\000\052\000\000\000\000\000\
    \000\000\000\000\000\000\083\000\083\000\083\000\083\000\083\000\
    \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\
    \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\
    \083\000\083\000\083\000\083\000\083\000\000\000\000\000\000\000\
    \000\000\083\000\000\000\083\000\083\000\083\000\083\000\083\000\
    \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\
    \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\
    \083\000\083\000\083\000\083\000\083\000\085\000\085\000\085\000\
    \085\000\085\000\085\000\085\000\085\000\085\000\085\000\122\000\
    \122\000\122\000\122\000\122\000\122\000\123\000\122\000\123\000\
    \122\000\122\000\122\000\123\000\122\000\122\000\122\000\122\000\
    \122\000\123\000\122\000\123\000\122\000\122\000\122\000\122\000\
    \122\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\092\000\255\255\000\000\084\000\000\000\083\000\083\000\
    \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\
    \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\
    \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\
    \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\
    \085\000\085\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\
    \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\
    \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\
    \085\000\085\000\085\000\000\000\000\000\000\000\000\000\085\000\
    \000\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\
    \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\
    \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\
    \085\000\085\000\085\000\086\000\086\000\086\000\086\000\086\000\
    \086\000\086\000\086\000\086\000\086\000\000\000\117\000\000\000\
    \000\000\116\000\000\000\000\000\086\000\086\000\086\000\086\000\
    \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\
    \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\
    \086\000\086\000\086\000\086\000\086\000\086\000\000\000\000\000\
    \000\000\000\000\086\000\114\000\086\000\086\000\086\000\086\000\
    \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\
    \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\
    \086\000\086\000\086\000\086\000\086\000\086\000\099\000\255\255\
    \108\000\098\000\255\255\107\000\255\255\255\255\000\000\255\255\
    \255\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \115\000\000\000\000\000\000\000\000\000\000\000\096\000\255\255\
    \000\000\000\000\000\000\000\000\000\000\105\000\000\000\000\000\
    \000\000\255\255\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\255\255\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \097\000\255\255\106\000\000\000\000\000\000\000\255\255\255\255\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\118\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\100\000\255\255\109\000\000\000\
    \000\000\000\000\255\255\255\255";
  Lexing.lex_check = 
   "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\044\000\043\000\006\000\090\000\098\000\006\000\007\000\
    \007\000\107\000\116\000\007\000\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \044\000\002\000\255\255\000\000\255\255\255\255\007\000\007\000\
    \007\000\007\000\255\255\007\000\007\000\007\000\007\000\007\000\
    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
    \007\000\007\000\027\000\007\000\007\000\007\000\028\000\007\000\
    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
    \007\000\007\000\007\000\007\000\007\000\029\000\029\000\030\000\
    \031\000\034\000\035\000\051\000\036\000\037\000\059\000\009\000\
    \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\
    \009\000\079\000\089\000\032\000\036\000\036\000\255\255\037\000\
    \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\
    \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\
    \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\
    \009\000\009\000\097\000\003\000\106\000\255\255\009\000\004\000\
    \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\
    \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\
    \009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\
    \009\000\009\000\032\000\033\000\255\255\038\000\255\255\255\255\
    \255\255\039\000\038\000\039\000\039\000\039\000\039\000\039\000\
    \039\000\039\000\039\000\039\000\039\000\255\255\255\255\000\000\
    \038\000\106\000\033\000\255\255\097\000\115\000\010\000\010\000\
    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
    \000\000\006\000\255\255\255\255\255\255\255\255\007\000\010\000\
    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
    \010\000\064\000\115\000\255\255\064\000\010\000\255\255\010\000\
    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
    \010\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
    \011\000\011\000\011\000\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\011\000\011\000\011\000\011\000\011\000\011\000\
    \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
    \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
    \011\000\011\000\011\000\011\000\255\255\255\255\255\255\255\255\
    \011\000\255\255\011\000\011\000\011\000\011\000\011\000\011\000\
    \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
    \011\000\011\000\011\000\011\000\011\000\011\000\011\000\011\000\
    \011\000\011\000\011\000\011\000\012\000\255\255\012\000\012\000\
    \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
    \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
    \012\000\012\000\012\000\012\000\012\000\012\000\012\000\012\000\
    \040\000\255\255\040\000\040\000\040\000\040\000\040\000\040\000\
    \040\000\040\000\040\000\040\000\054\000\054\000\054\000\054\000\
    \054\000\054\000\054\000\054\000\054\000\054\000\041\000\040\000\
    \041\000\041\000\041\000\041\000\041\000\041\000\041\000\041\000\
    \041\000\041\000\055\000\055\000\055\000\055\000\055\000\055\000\
    \055\000\055\000\055\000\055\000\255\255\041\000\255\255\255\255\
    \255\255\255\255\255\255\047\000\255\255\047\000\255\255\040\000\
    \047\000\047\000\047\000\047\000\047\000\047\000\047\000\047\000\
    \047\000\047\000\057\000\057\000\057\000\057\000\057\000\057\000\
    \057\000\057\000\057\000\057\000\048\000\041\000\048\000\048\000\
    \048\000\048\000\048\000\048\000\048\000\048\000\048\000\048\000\
    \255\255\255\255\255\255\087\000\088\000\255\255\087\000\088\000\
    \041\000\255\255\255\255\048\000\049\000\049\000\049\000\049\000\
    \049\000\049\000\049\000\049\000\049\000\049\000\255\255\064\000\
    \255\255\255\255\255\255\255\255\255\255\049\000\049\000\049\000\
    \049\000\049\000\049\000\087\000\088\000\255\255\255\255\255\255\
    \255\255\255\255\255\255\048\000\255\255\255\255\255\255\255\255\
    \255\255\255\255\050\000\050\000\050\000\050\000\050\000\050\000\
    \050\000\050\000\050\000\050\000\255\255\049\000\049\000\049\000\
    \049\000\049\000\049\000\050\000\050\000\050\000\050\000\050\000\
    \050\000\052\000\255\255\052\000\255\255\255\255\052\000\052\000\
    \052\000\052\000\052\000\052\000\052\000\052\000\052\000\052\000\
    \053\000\053\000\053\000\053\000\053\000\053\000\053\000\053\000\
    \053\000\053\000\255\255\050\000\050\000\050\000\050\000\050\000\
    \050\000\255\255\255\255\255\255\255\255\053\000\058\000\058\000\
    \058\000\058\000\058\000\058\000\058\000\058\000\058\000\058\000\
    \060\000\060\000\060\000\060\000\060\000\060\000\060\000\060\000\
    \060\000\060\000\083\000\083\000\083\000\083\000\083\000\083\000\
    \083\000\083\000\083\000\083\000\255\255\053\000\255\255\255\255\
    \255\255\255\255\255\255\083\000\083\000\083\000\083\000\083\000\
    \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\
    \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\
    \083\000\083\000\083\000\083\000\083\000\255\255\255\255\255\255\
    \255\255\083\000\255\255\083\000\083\000\083\000\083\000\083\000\
    \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\
    \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\
    \083\000\083\000\083\000\083\000\083\000\084\000\084\000\084\000\
    \084\000\084\000\084\000\084\000\084\000\084\000\084\000\121\000\
    \121\000\121\000\121\000\121\000\121\000\121\000\121\000\121\000\
    \121\000\121\000\121\000\121\000\121\000\121\000\121\000\121\000\
    \121\000\121\000\121\000\121\000\121\000\121\000\121\000\121\000\
    \121\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\087\000\088\000\255\255\084\000\255\255\084\000\084\000\
    \084\000\084\000\084\000\084\000\084\000\084\000\084\000\084\000\
    \084\000\084\000\084\000\084\000\084\000\084\000\084\000\084\000\
    \084\000\084\000\084\000\084\000\084\000\084\000\084\000\084\000\
    \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\
    \085\000\085\000\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\085\000\085\000\085\000\085\000\085\000\085\000\085\000\
    \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\
    \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\
    \085\000\085\000\085\000\255\255\255\255\255\255\255\255\085\000\
    \255\255\085\000\085\000\085\000\085\000\085\000\085\000\085\000\
    \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\
    \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\
    \085\000\085\000\085\000\086\000\086\000\086\000\086\000\086\000\
    \086\000\086\000\086\000\086\000\086\000\255\255\112\000\255\255\
    \255\255\112\000\255\255\255\255\086\000\086\000\086\000\086\000\
    \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\
    \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\
    \086\000\086\000\086\000\086\000\086\000\086\000\255\255\255\255\
    \255\255\255\255\086\000\112\000\086\000\086\000\086\000\086\000\
    \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\
    \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\
    \086\000\086\000\086\000\086\000\086\000\086\000\094\000\095\000\
    \103\000\094\000\095\000\103\000\104\000\113\000\255\255\104\000\
    \113\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \112\000\255\255\255\255\255\255\255\255\255\255\094\000\095\000\
    \255\255\255\255\255\255\255\255\255\255\103\000\255\255\255\255\
    \255\255\104\000\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\113\000\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \094\000\095\000\103\000\255\255\255\255\255\255\104\000\113\000\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\112\000\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\094\000\095\000\103\000\255\255\
    \255\255\255\255\104\000\113\000";
  Lexing.lex_base_code = 
   "";
  Lexing.lex_backtrk_code = 
   "";
  Lexing.lex_default_code = 
   "";
  Lexing.lex_trans_code = 
   "";
  Lexing.lex_check_code = 
   "";
  Lexing.lex_code = 
   "";
}

let rec skip_header lexbuf =
    __ocaml_lex_skip_header_rec lexbuf 0
and __ocaml_lex_skip_header_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 163 "../haxe/lexer.mll"
                  ( skip_header lexbuf )
# 517 "../haxe/lexer.ml"

  | 1 ->
# 164 "../haxe/lexer.mll"
                      ( skip_header lexbuf )
# 522 "../haxe/lexer.ml"

  | 2 ->
# 165 "../haxe/lexer.mll"
            ( )
# 527 "../haxe/lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_skip_header_rec lexbuf __ocaml_lex_state

and token lexbuf =
    __ocaml_lex_token_rec lexbuf 7
and __ocaml_lex_token_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 168 "../haxe/lexer.mll"
       ( mk lexbuf Eof )
# 538 "../haxe/lexer.ml"

  | 1 ->
# 169 "../haxe/lexer.mll"
               ( token lexbuf )
# 543 "../haxe/lexer.ml"

  | 2 ->
# 170 "../haxe/lexer.mll"
          ( newline lexbuf; token lexbuf )
# 548 "../haxe/lexer.ml"

  | 3 ->
# 171 "../haxe/lexer.mll"
               ( newline lexbuf; token lexbuf )
# 553 "../haxe/lexer.ml"

  | 4 ->
# 172 "../haxe/lexer.mll"
                                   ( mk lexbuf (Const (Int (lexeme lexbuf))) )
# 558 "../haxe/lexer.ml"

  | 5 ->
# 173 "../haxe/lexer.mll"
              ( mk lexbuf (Const (Int (lexeme lexbuf))) )
# 563 "../haxe/lexer.ml"

  | 6 ->
# 174 "../haxe/lexer.mll"
                             ( mk lexbuf (Const (Float (lexeme lexbuf))) )
# 568 "../haxe/lexer.ml"

  | 7 ->
# 175 "../haxe/lexer.mll"
                  ( mk lexbuf (Const (Float (lexeme lexbuf))) )
# 573 "../haxe/lexer.ml"

  | 8 ->
# 176 "../haxe/lexer.mll"
                                              ( mk lexbuf (Const (Float (lexeme lexbuf))) )
# 578 "../haxe/lexer.ml"

  | 9 ->
# 177 "../haxe/lexer.mll"
                                                             ( mk lexbuf (Const (Float (lexeme lexbuf))) )
# 583 "../haxe/lexer.ml"

  | 10 ->
# 178 "../haxe/lexer.mll"
                    (
			let s = lexeme lexbuf in
			mk lexbuf (IntInterval (String.sub s 0 (String.length s - 3)))
		)
# 591 "../haxe/lexer.ml"

  | 11 ->
# 182 "../haxe/lexer.mll"
                       (
			let s = lexeme lexbuf in
			mk lexbuf (CommentLine (String.sub s 2 ((String.length s)-2)))
		)
# 599 "../haxe/lexer.ml"

  | 12 ->
# 186 "../haxe/lexer.mll"
        ( mk lexbuf (Unop Increment) )
# 604 "../haxe/lexer.ml"

  | 13 ->
# 187 "../haxe/lexer.mll"
        ( mk lexbuf (Unop Decrement) )
# 609 "../haxe/lexer.ml"

  | 14 ->
# 188 "../haxe/lexer.mll"
        ( mk lexbuf (Unop NegBits) )
# 614 "../haxe/lexer.ml"

  | 15 ->
# 189 "../haxe/lexer.mll"
        ( mk lexbuf (Binop (OpAssignOp OpMod)) )
# 619 "../haxe/lexer.ml"

  | 16 ->
# 190 "../haxe/lexer.mll"
        ( mk lexbuf (Binop (OpAssignOp OpAnd)) )
# 624 "../haxe/lexer.ml"

  | 17 ->
# 191 "../haxe/lexer.mll"
        ( mk lexbuf (Binop (OpAssignOp OpOr)) )
# 629 "../haxe/lexer.ml"

  | 18 ->
# 192 "../haxe/lexer.mll"
        ( mk lexbuf (Binop (OpAssignOp OpXor)) )
# 634 "../haxe/lexer.ml"

  | 19 ->
# 193 "../haxe/lexer.mll"
        ( mk lexbuf (Binop (OpAssignOp OpAdd)) )
# 639 "../haxe/lexer.ml"

  | 20 ->
# 194 "../haxe/lexer.mll"
        ( mk lexbuf (Binop (OpAssignOp OpSub)) )
# 644 "../haxe/lexer.ml"

  | 21 ->
# 195 "../haxe/lexer.mll"
        ( mk lexbuf (Binop (OpAssignOp OpMult)) )
# 649 "../haxe/lexer.ml"

  | 22 ->
# 196 "../haxe/lexer.mll"
        ( mk lexbuf (Binop (OpAssignOp OpDiv)) )
# 654 "../haxe/lexer.ml"

  | 23 ->
# 197 "../haxe/lexer.mll"
         ( mk lexbuf (Binop (OpAssignOp OpShl)) )
# 659 "../haxe/lexer.ml"

  | 24 ->
# 200 "../haxe/lexer.mll"
        ( mk lexbuf (Binop OpEq) )
# 664 "../haxe/lexer.ml"

  | 25 ->
# 201 "../haxe/lexer.mll"
        ( mk lexbuf (Binop OpNotEq) )
# 669 "../haxe/lexer.ml"

  | 26 ->
# 202 "../haxe/lexer.mll"
        ( mk lexbuf (Binop OpLte) )
# 674 "../haxe/lexer.ml"

  | 27 ->
# 204 "../haxe/lexer.mll"
        ( mk lexbuf (Binop OpBoolAnd) )
# 679 "../haxe/lexer.ml"

  | 28 ->
# 205 "../haxe/lexer.mll"
        ( mk lexbuf (Binop OpBoolOr) )
# 684 "../haxe/lexer.ml"

  | 29 ->
# 206 "../haxe/lexer.mll"
        ( mk lexbuf (Binop OpShl) )
# 689 "../haxe/lexer.ml"

  | 30 ->
# 207 "../haxe/lexer.mll"
        ( mk lexbuf Arrow )
# 694 "../haxe/lexer.ml"

  | 31 ->
# 208 "../haxe/lexer.mll"
         ( mk lexbuf (Binop OpInterval) )
# 699 "../haxe/lexer.ml"

  | 32 ->
# 209 "../haxe/lexer.mll"
       ( mk lexbuf (Unop Not) )
# 704 "../haxe/lexer.ml"

  | 33 ->
# 210 "../haxe/lexer.mll"
       ( mk lexbuf (Binop OpLt) )
# 709 "../haxe/lexer.ml"

  | 34 ->
# 211 "../haxe/lexer.mll"
       ( mk lexbuf (Binop OpGt) )
# 714 "../haxe/lexer.ml"

  | 35 ->
# 212 "../haxe/lexer.mll"
       ( mk lexbuf Semicolon )
# 719 "../haxe/lexer.ml"

  | 36 ->
# 213 "../haxe/lexer.mll"
       ( mk lexbuf DblDot )
# 724 "../haxe/lexer.ml"

  | 37 ->
# 214 "../haxe/lexer.mll"
       ( mk lexbuf Comma )
# 729 "../haxe/lexer.ml"

  | 38 ->
# 215 "../haxe/lexer.mll"
       ( mk lexbuf Dot )
# 734 "../haxe/lexer.ml"

  | 39 ->
# 216 "../haxe/lexer.mll"
       ( mk lexbuf (Binop OpMod) )
# 739 "../haxe/lexer.ml"

  | 40 ->
# 217 "../haxe/lexer.mll"
       ( mk lexbuf (Binop OpAnd) )
# 744 "../haxe/lexer.ml"

  | 41 ->
# 218 "../haxe/lexer.mll"
       ( mk lexbuf (Binop OpOr) )
# 749 "../haxe/lexer.ml"

  | 42 ->
# 219 "../haxe/lexer.mll"
       ( mk lexbuf (Binop OpXor) )
# 754 "../haxe/lexer.ml"

  | 43 ->
# 220 "../haxe/lexer.mll"
       ( mk lexbuf (Binop OpAdd) )
# 759 "../haxe/lexer.ml"

  | 44 ->
# 221 "../haxe/lexer.mll"
       ( mk lexbuf (Binop OpMult) )
# 764 "../haxe/lexer.ml"

  | 45 ->
# 222 "../haxe/lexer.mll"
       ( mk lexbuf (Binop OpDiv) )
# 769 "../haxe/lexer.ml"

  | 46 ->
# 223 "../haxe/lexer.mll"
       ( mk lexbuf (Binop OpSub) )
# 774 "../haxe/lexer.ml"

  | 47 ->
# 224 "../haxe/lexer.mll"
       ( mk lexbuf (Binop OpAssign) )
# 779 "../haxe/lexer.ml"

  | 48 ->
# 225 "../haxe/lexer.mll"
       ( mk lexbuf BkOpen )
# 784 "../haxe/lexer.ml"

  | 49 ->
# 226 "../haxe/lexer.mll"
       ( mk lexbuf BkClose )
# 789 "../haxe/lexer.ml"

  | 50 ->
# 227 "../haxe/lexer.mll"
       ( mk lexbuf BrOpen )
# 794 "../haxe/lexer.ml"

  | 51 ->
# 228 "../haxe/lexer.mll"
       ( mk lexbuf BrClose )
# 799 "../haxe/lexer.ml"

  | 52 ->
# 229 "../haxe/lexer.mll"
       ( mk lexbuf POpen )
# 804 "../haxe/lexer.ml"

  | 53 ->
# 230 "../haxe/lexer.mll"
       ( mk lexbuf PClose )
# 809 "../haxe/lexer.ml"

  | 54 ->
# 231 "../haxe/lexer.mll"
       ( mk lexbuf Question )
# 814 "../haxe/lexer.ml"

  | 55 ->
# 232 "../haxe/lexer.mll"
       ( mk lexbuf At )
# 819 "../haxe/lexer.ml"

  | 56 ->
# 233 "../haxe/lexer.mll"
        (
			reset();
			let pmin = lexeme_start lexbuf in
			let pmax = (try comment lexbuf with Exit -> error Unclosed_comment pmin) in
			mk_tok (Comment (contents())) pmin pmax;
		)
# 829 "../haxe/lexer.ml"

  | 57 ->
# 239 "../haxe/lexer.mll"
       (
			reset();
			let pmin = lexeme_start lexbuf in
			let pmax = (try string lexbuf with Exit -> error Unterminated_string pmin) in
			let str = (try unescape (contents()) with Exit -> error Invalid_escape pmin) in
			mk_tok (Const (String str)) pmin pmax;
		)
# 840 "../haxe/lexer.ml"

  | 58 ->
# 246 "../haxe/lexer.mll"
       (
			reset();
			let pmin = lexeme_start lexbuf in
			let pmax = (try string2 lexbuf with Exit -> error Unterminated_string pmin) in
			let str = (try unescape (contents()) with Exit -> error Invalid_escape pmin) in
			mk_tok (Const (String str)) pmin pmax;
		)
# 851 "../haxe/lexer.ml"

  | 59 ->
# 253 "../haxe/lexer.mll"
        (
			reset();
			let pmin = lexeme_start lexbuf in
			let options, pmax = (try regexp lexbuf with Exit -> error Unterminated_regexp pmin) in
			let str = contents() in
			mk_tok (Const (Regexp (str,options))) pmin pmax;
		)
# 862 "../haxe/lexer.ml"

  | 60 ->
# 260 "../haxe/lexer.mll"
             (
			let v = lexeme lexbuf in
			let v = String.sub v 1 (String.length v - 1) in
			mk lexbuf (Macro v)
		)
# 871 "../haxe/lexer.ml"

  | 61 ->
# 265 "../haxe/lexer.mll"
         ( mk_ident lexbuf )
# 876 "../haxe/lexer.ml"

  | 62 ->
# 266 "../haxe/lexer.mll"
          ( mk lexbuf (Const (Type (lexeme lexbuf))) )
# 881 "../haxe/lexer.ml"

  | 63 ->
# 267 "../haxe/lexer.mll"
     ( invalid_char lexbuf )
# 886 "../haxe/lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_token_rec lexbuf __ocaml_lex_state

and comment lexbuf =
    __ocaml_lex_comment_rec lexbuf 87
and __ocaml_lex_comment_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 270 "../haxe/lexer.mll"
       ( raise Exit )
# 897 "../haxe/lexer.ml"

  | 1 ->
# 271 "../haxe/lexer.mll"
                        ( newline lexbuf; store lexbuf; comment lexbuf )
# 902 "../haxe/lexer.ml"

  | 2 ->
# 272 "../haxe/lexer.mll"
        ( lexeme_end lexbuf )
# 907 "../haxe/lexer.ml"

  | 3 ->
# 273 "../haxe/lexer.mll"
       ( store lexbuf; comment lexbuf )
# 912 "../haxe/lexer.ml"

  | 4 ->
# 274 "../haxe/lexer.mll"
                     ( store lexbuf; comment lexbuf )
# 917 "../haxe/lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_comment_rec lexbuf __ocaml_lex_state

and string lexbuf =
    __ocaml_lex_string_rec lexbuf 94
and __ocaml_lex_string_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 277 "../haxe/lexer.mll"
       ( raise Exit )
# 928 "../haxe/lexer.ml"

  | 1 ->
# 278 "../haxe/lexer.mll"
                        ( newline lexbuf; store lexbuf; string lexbuf )
# 933 "../haxe/lexer.ml"

  | 2 ->
# 279 "../haxe/lexer.mll"
          ( store lexbuf; string lexbuf )
# 938 "../haxe/lexer.ml"

  | 3 ->
# 280 "../haxe/lexer.mll"
          ( store lexbuf; string lexbuf )
# 943 "../haxe/lexer.ml"

  | 4 ->
# 281 "../haxe/lexer.mll"
        ( store lexbuf; string lexbuf )
# 948 "../haxe/lexer.ml"

  | 5 ->
# 282 "../haxe/lexer.mll"
       ( lexeme_end lexbuf )
# 953 "../haxe/lexer.ml"

  | 6 ->
# 283 "../haxe/lexer.mll"
                          ( store lexbuf; string lexbuf )
# 958 "../haxe/lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_string_rec lexbuf __ocaml_lex_state

and string2 lexbuf =
    __ocaml_lex_string2_rec lexbuf 103
and __ocaml_lex_string2_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 286 "../haxe/lexer.mll"
       ( raise Exit )
# 969 "../haxe/lexer.ml"

  | 1 ->
# 287 "../haxe/lexer.mll"
                        ( newline lexbuf; store lexbuf; string2 lexbuf )
# 974 "../haxe/lexer.ml"

  | 2 ->
# 288 "../haxe/lexer.mll"
        ( store lexbuf; string2 lexbuf )
# 979 "../haxe/lexer.ml"

  | 3 ->
# 289 "../haxe/lexer.mll"
          ( store lexbuf; string2 lexbuf )
# 984 "../haxe/lexer.ml"

  | 4 ->
# 290 "../haxe/lexer.mll"
         ( store lexbuf; string2 lexbuf )
# 989 "../haxe/lexer.ml"

  | 5 ->
# 291 "../haxe/lexer.mll"
       ( lexeme_end lexbuf )
# 994 "../haxe/lexer.ml"

  | 6 ->
# 292 "../haxe/lexer.mll"
                           ( store lexbuf; string2 lexbuf )
# 999 "../haxe/lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_string2_rec lexbuf __ocaml_lex_state

and regexp lexbuf =
    __ocaml_lex_regexp_rec lexbuf 112
and __ocaml_lex_regexp_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 295 "../haxe/lexer.mll"
       ( raise Exit )
# 1010 "../haxe/lexer.ml"

  | 1 ->
# 296 "../haxe/lexer.mll"
                        ( newline lexbuf; store lexbuf; regexp lexbuf )
# 1015 "../haxe/lexer.ml"

  | 2 ->
# 297 "../haxe/lexer.mll"
         ( add "/"; regexp lexbuf )
# 1020 "../haxe/lexer.ml"

  | 3 ->
# 298 "../haxe/lexer.mll"
                 ( store lexbuf; regexp lexbuf )
# 1025 "../haxe/lexer.ml"

  | 4 ->
# 299 "../haxe/lexer.mll"
       ( regexp_options lexbuf, lexeme_end lexbuf )
# 1030 "../haxe/lexer.ml"

  | 5 ->
# 300 "../haxe/lexer.mll"
                           ( store lexbuf; regexp lexbuf )
# 1035 "../haxe/lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_regexp_rec lexbuf __ocaml_lex_state

and regexp_options lexbuf =
    __ocaml_lex_regexp_options_rec lexbuf 121
and __ocaml_lex_regexp_options_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 303 "../haxe/lexer.mll"
                               (
			let l = lexeme lexbuf in
			l ^ regexp_options lexbuf
		)
# 1049 "../haxe/lexer.ml"

  | 1 ->
# 307 "../haxe/lexer.mll"
               ( error Invalid_option (lexeme_start lexbuf) )
# 1054 "../haxe/lexer.ml"

  | 2 ->
# 308 "../haxe/lexer.mll"
      ( "" )
# 1059 "../haxe/lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_regexp_options_rec lexbuf __ocaml_lex_state

;;

